package main

import (
	"freedom/finterface"
	"freedom/flog"
	"freedom/fnet"
	"freedom/futils"
)

//func TestSyncMap() {
//	var m sync.Map
//	m.Store("z", 1)
//	m.Store("b", 2)
//
//	a, _ := m.Load("z")
//	flog.Debugf("Store Load a = %d", a.(int))
//
//	m.Range(func(key, value interface{}) bool {
//		k := key.(string)
//		v := value.(int)
//		flog.Debugf("Range %s = %d", k, v)
//		return true
//	})
//
//	m.Delete("z")
//	a, _ = m.Load("z")
//	flog.Debugf("Delete Load a = %d", a)
//
//	a1, b1 := m.LoadOrStore('b', 100)
//	flog.Debugf("LoadOrStore Load a = %d b = %t", a1, b1)
//	a2, b2 := m.Load('b')
//	flog.Debugf("Load a = %d b = %t", a2, b2)
//	m.Range(func(key, value interface{}) bool {
//		v := value.(int)
//		if k, ok := key.(string); ok {
//			flog.Debugf("Range %s = %d", k, v)
//		} else if k, ok := key.(rune); ok {
//			flog.Debugf("Range %v = %d", k, v)
//		}
//		return true
//	})
//
//	z1, zb1 := m.LoadOrStore("z", 100)
//	flog.Debugf("LoadOrStore Load a = %d b = %t", z1, zb1)
//	z2, zb2 := m.Load("z")
//	flog.Debugf("Load a = %d b = %t", z2, zb2)
//}

func main() {
	flog.InitLogger("gateserver", 1, "./log", flog.DebugLevel)
	defer flog.SyncLogger()
	svr := fnet.NewWsServer("192.168.1.107", 9999, "/msg", nil, nil)
	svr.Start()

	svr.AddHandleFunc(1, func(context finterface.IContext) {
		msg := context.GetMessage()
		flog.Infof("msgId:%d msgData:%s", msg.GetMsgId(), string(msg.GetMsgData()))
	})

	futils.Graceful()
}
